﻿namespace Steamworks
{
    using System;
    using System.Runtime.InteropServices;

    [StructLayout(LayoutKind.Sequential)]
    public struct HTTPRequestHandle : IEquatable<HTTPRequestHandle>, IComparable<HTTPRequestHandle>
    {
        public static readonly HTTPRequestHandle Invalid;
        public uint m_HTTPRequestHandle;
        public HTTPRequestHandle(uint value)
        {
            this.m_HTTPRequestHandle = value;
        }

        static HTTPRequestHandle()
        {
            Invalid = new HTTPRequestHandle(0);
        }

        public override string ToString()
        {
            return this.m_HTTPRequestHandle.ToString();
        }

        public override bool Equals(object other)
        {
            return ((other is HTTPRequestHandle) && (this == ((HTTPRequestHandle) other)));
        }

        public override int GetHashCode()
        {
            return this.m_HTTPRequestHandle.GetHashCode();
        }

        public bool Equals(HTTPRequestHandle other)
        {
            return (this.m_HTTPRequestHandle == other.m_HTTPRequestHandle);
        }

        public int CompareTo(HTTPRequestHandle other)
        {
            return this.m_HTTPRequestHandle.CompareTo(other.m_HTTPRequestHandle);
        }

        public static bool operator ==(HTTPRequestHandle x, HTTPRequestHandle y)
        {
            return (x.m_HTTPRequestHandle == y.m_HTTPRequestHandle);
        }

        public static bool operator !=(HTTPRequestHandle x, HTTPRequestHandle y)
        {
            return !(x == y);
        }

        public static explicit operator HTTPRequestHandle(uint value)
        {
            return new HTTPRequestHandle(value);
        }

        public static explicit operator uint(HTTPRequestHandle that)
        {
            return that.m_HTTPRequestHandle;
        }
    }
}

